home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / management / MBeanServerPermission.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  3.0 KB  |  157 lines

  1. package javax.management;
  2.  
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.security.BasicPermission;
  6. import java.security.Permission;
  7. import java.security.PermissionCollection;
  8. import java.util.StringTokenizer;
  9.  
  10. public class MBeanServerPermission extends BasicPermission {
  11.    private static final long serialVersionUID = -5661980843569388590L;
  12.    private static final int CREATE = 0;
  13.    private static final int FIND = 1;
  14.    private static final int NEW = 2;
  15.    private static final int RELEASE = 3;
  16.    private static final int N_NAMES = 4;
  17.    private static final String[] names = new String[]{"createMBeanServer", "findMBeanServer", "newMBeanServer", "releaseMBeanServer"};
  18.    private static final int CREATE_MASK = 1;
  19.    private static final int FIND_MASK = 2;
  20.    private static final int NEW_MASK = 4;
  21.    private static final int RELEASE_MASK = 8;
  22.    private static final int ALL_MASK = 15;
  23.    private static final String[] canonicalNames = new String[16];
  24.    transient int mask;
  25.  
  26.    public MBeanServerPermission(String var1) {
  27.       this(var1, (String)null);
  28.    }
  29.  
  30.    public MBeanServerPermission(String var1, String var2) {
  31.       super(getCanonicalName(parseMask(var1)), var2);
  32.       this.mask = parseMask(var1);
  33.       if (var2 != null && var2.length() > 0) {
  34.          throw new IllegalArgumentException("MBeanServerPermission actions must be null: " + var2);
  35.       }
  36.    }
  37.  
  38.    MBeanServerPermission(int var1) {
  39.       super(getCanonicalName(var1));
  40.       this.mask = impliedMask(var1);
  41.    }
  42.  
  43.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  44.       var1.defaultReadObject();
  45.       this.mask = parseMask(this.getName());
  46.    }
  47.  
  48.    static int simplifyMask(int var0) {
  49.       if ((var0 & 1) != 0) {
  50.          var0 &= -5;
  51.       }
  52.  
  53.       return var0;
  54.    }
  55.  
  56.    static int impliedMask(int var0) {
  57.       if ((var0 & 1) != 0) {
  58.          var0 |= 4;
  59.       }
  60.  
  61.       return var0;
  62.    }
  63.  
  64.    static String getCanonicalName(int var0) {
  65.       if (var0 == 15) {
  66.          return "*";
  67.       } else {
  68.          var0 = simplifyMask(var0);
  69.          synchronized(canonicalNames) {
  70.             if (canonicalNames[var0] == null) {
  71.                canonicalNames[var0] = makeCanonicalName(var0);
  72.             }
  73.          }
  74.  
  75.          return canonicalNames[var0];
  76.       }
  77.    }
  78.  
  79.    private static String makeCanonicalName(int var0) {
  80.       StringBuffer var1 = new StringBuffer();
  81.  
  82.       for(int var2 = 0; var2 < 4; ++var2) {
  83.          if ((var0 & 1 << var2) != 0) {
  84.             if (var1.length() > 0) {
  85.                var1.append(',');
  86.             }
  87.  
  88.             var1.append(names[var2]);
  89.          }
  90.       }
  91.  
  92.       return var1.toString().intern();
  93.    }
  94.  
  95.    private static int parseMask(String var0) {
  96.       if (var0 == null) {
  97.          throw new NullPointerException("MBeanServerPermission: target name can't be null");
  98.       } else {
  99.          var0 = var0.trim();
  100.          if (var0.equals("*")) {
  101.             return 15;
  102.          } else if (var0.indexOf(44) < 0) {
  103.             return impliedMask(1 << nameIndex(var0.trim()));
  104.          } else {
  105.             int var1 = 0;
  106.  
  107.             int var4;
  108.             for(StringTokenizer var2 = new StringTokenizer(var0, ","); var2.hasMoreTokens(); var1 |= 1 << var4) {
  109.                String var3 = var2.nextToken();
  110.                var4 = nameIndex(var3.trim());
  111.             }
  112.  
  113.             return impliedMask(var1);
  114.          }
  115.       }
  116.    }
  117.  
  118.    private static int nameIndex(String var0) throws IllegalArgumentException {
  119.       for(int var1 = 0; var1 < 4; ++var1) {
  120.          if (names[var1].equals(var0)) {
  121.             return var1;
  122.          }
  123.       }
  124.  
  125.       String var2 = "Invalid MBeanServerPermission name: \"" + var0 + "\"";
  126.       throw new IllegalArgumentException(var2);
  127.    }
  128.  
  129.    public int hashCode() {
  130.       return this.mask;
  131.    }
  132.  
  133.    public boolean implies(Permission var1) {
  134.       if (!(var1 instanceof MBeanServerPermission)) {
  135.          return false;
  136.       } else {
  137.          MBeanServerPermission var2 = (MBeanServerPermission)var1;
  138.          return (this.mask & var2.mask) == var2.mask;
  139.       }
  140.    }
  141.  
  142.    public boolean equals(Object var1) {
  143.       if (var1 == this) {
  144.          return true;
  145.       } else if (!(var1 instanceof MBeanServerPermission)) {
  146.          return false;
  147.       } else {
  148.          MBeanServerPermission var2 = (MBeanServerPermission)var1;
  149.          return this.mask == var2.mask;
  150.       }
  151.    }
  152.  
  153.    public PermissionCollection newPermissionCollection() {
  154.       return new MBeanServerPermissionCollection();
  155.    }
  156. }
  157.